perm filename OBVI.RLS[206,JMC]1 blob
sn#057947 filedate 1973-08-14 generic text, type T, neo UTF8
00100 COUNT(X,Y) ← IF NULL Y THEN 0
00200 ELSE IF CAR Y = X THEN 1 + COUNT(X,CDR Y)
00300 ELSE COUNT(X,CDR Y);
00400
00500 ELIMALL(X,Y) ← IF NULL Y THEN NIL
00600 ELSE IF MEMBER(CAR Y,X) THEN ELIMALL(X,CDR Y)
00700 ELSE CAR Y . ELIMALL(X,CDR Y);
00800
00900 ELIMDUP X ← IF NULL X THEN NIL ELSE CAR X . ELIMDUP ELIMALL(LIST CAR X,CDR X);
01000
01100 ZORCH N ← IF NULL SP N THEN NIL ELSE LIST CAR SP N;
01120
01140 ZILCH N ← REMAINDER(CAR FP N + N - 1,13) + 1;
01200
01300 SYMBOLIC PROCEDURE OBVIOUS();
01400 BEGIN SCALAR AVAIL,NAVAIL,FTOP,BURIED,NHAND,MOVES,X;
01500 MOVES ← FMOVES();
01600 IF NULL MOVES THEN RETURN "NO MOVES";
01700 IF NULL CDR MOVES THEN RETURN CAR MOVES;
01800 AVAIL ← APPEND(IF NULL HAND THEN NIL ELSE LIST CAR HAND,
01900 ZORCH 1,ZORCH 2,ZORCH 3,ZORCH 4);
02000 NAVAIL ← ELIMDUP AVAIL;
02100 FTOP ← ELIMALL(LIST 0,LIST(ZILCH 1,ZILCH 2,ZILCH 3,ZILCH 4));
02200 NHAND ← IF NULL HAND THEN NIL ELSE CDR HAND;
02300 BURIED ←APPEND(IF NULL SP 1 THEN NIL ELSE CDR SP 1,
02400 IF NULL SP 2 THEN NIL ELSE CDR SP 2,
02500 IF NULL SP 3 THEN NIL ELSE CDR SP 3,
02600 IF NULL SP 4 THEN NIL ELSE CDR SP 4);
02700 PRINT "FOO1";
02800 LOOP:
02900 IF NULL NAVAIL THEN RETURN NIL;
03000 X ← CAR NAVAIL; NAVAIL ← CDR NAVAIL;
03100 IF COUNT(X,AVAIL) ≠ COUNT(X,FTOP) ∨ COUNT(X,BURIED)≠0 ∨ COUNT(X,NHAND)≠0
03200 THEN GO TO LOOP;
03300 PRINT "FOO2";
03400 J←1;L:IF J>4 THEN GO TO L1; IF
03450 REMAINDER(CAR FP J + J - X,13) = 0 THEN GO TO W1;J←J+1;GO TO L;L1:
03500 PRINT LIST("X=",X,",SP=",SP 1,SP 2,SP 3,SP 4,"NAVAIL=",NAVAIL);
03600 RETURN "INCONSISTENCY 1 IN OBVIOUS";
03700 W1:
03800 PRINT "FOO4";
03900 IF NOT NULL HAND ∧ CAR HAND = X THEN RETURN LIST('HF,J);
04000 PRINT "FOO3";
04150 I←1;LL:IF I>4 THEN GO TO LL1;IF CAR SP I = X THEN RETURN LIST('SF,I,J);
04175 I←I+1;GO TO LL;LL1:
04200 RETURN "INCONSISTENCY 2 IN OBVIOUS";
04300 END;
04400
04500 END;